跳到主要内容

33.Q2b: 另一个有限状态机

考虑一个用于控制某类型电机的有限状态机(FSM)。该FSM有两个来自电机的输入x和y,以及两个控制电机的输出f和g。此外,它还有一个时钟输入clk和一个复位输入resetn。

该FSM需按以下方式工作。只要复位输入被激活,FSM就保持在初始状态,称为状态A。当复位信号解除后,在下一个时钟边沿之后,FSM必须将输出f设置为1,持续一个时钟周期。随后,FSM需要监测输入x。当x在连续三个时钟周期内产生值1、0、1时,接下来的时钟周期应将g设置为1。在保持g=1的同时,FSM需监测输入y。如果y在最多两个时钟周期内变为1,则FSM应永久保持g=1(即,直到下次复位)。但如果y在这两个时钟周期内未变为1,则FSM应将g设置为0,并永久保持(直到复位)。

(原考试题目只要求绘制状态图,但此处要求实现该FSM。)

模块声明

module top_module (
input clk,
input resetn, // active-low synchronous reset
input x,
input y,
output f,
output g
);

做题区